package org.jeecg.modules.zhouAdmin.admin.orderCenterModule.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.zhouAdmin.admin.orderCenterModule.pojo.*;
import org.jeecg.modules.zhoupackage.pojo.MlccProductInfo;
import org.jeecg.modules.zhoupackage.pojo.MlccTrackingTeamDepart;
import org.springframework.stereotype.Repository;

import java.util.List;

@Mapper
@Repository
public interface OrderCenterMapper {
    /**
     * 获取面料订单
     *
     * @param page      分页器
     * @param orderSn   订单编号
     * @param storeCode 门店编号
     * @param gysName   供应商名称
     * @param status    状态
     * @param crdate    时间
     * @return 分页后的数据
     */
    IPage<AdminFabricOrder> getFabricOrder(@Param("page") Page<AdminFabricOrder> page, @Param("orderSn") String orderSn, @Param("storeCode") String storeCode,
                                           @Param("gysName") String gysName, @Param("status") String status, @Param("crdate") String crdate, @Param("enddate") String enddate);

    /**
     * 获取个订订单
     *
     * @param page      分页器
     * @param orderSn   订单编号
     * @param storeCode 门店编号
     * @param gysName   供应商名称
     * @param status    状态
     * @param crdate    时间
     * @return 分页后的数据
     */
    IPage<AdminSingleOrder> getSingleOrder(@Param("page") Page<AdminSingleOrder> page, @Param("orderSn") String orderSn, @Param("storeCode") String storeCode,
                                           @Param("gysName") String gysName, @Param("status") String status, @Param("crdate") String crdate, @Param("enddate") String enddate);

    /**
     * 获取团订订单列表
     *
     * @param page      分页器
     * @param orderSn   订单编号
     * @param storeName 门店名称
     * @param status    状态
     * @param crdate    下单时间
     * @return 分页后的数据
     */
    IPage<AdminTeamOrder> getTeamOrder(@Param("page") Page<AdminTeamOrder> page, @Param("orderSn") String orderSn, @Param("storeCode") String storeCode,
                                       @Param("status") String status, @Param("crdate") String crdate, @Param("enddate") String enddate);

    /**
     * 团订订单批次列表
     *
     * @param orderSn 订单编号
     * @return
     */
    List<TeamPackingEntity> listPacking(@Param("orderSn") String orderSn);

    /**
     * 编辑批次页面获取批次基本信息
     *
     * @param packingID 批次ID
     * @return
     */
    TeamPackingEntity basePackingDetail(@Param("packingID") String packingID);

    /**
     * 获取装箱单下的人员列表
     *
     * @param packingId 装箱单ID
     */
    List<BoxPersonEntity> listBoxPerson(@Param("packingId") String packingId);

    /**
     * 团订新增装箱单界面，根据批次ID查询产品列表
     *
     * @param batchID 批次ID
     */
    List<MlccProductInfo> getProductByBatchID(@Param("batchID") String batchID);

    /**
     * 团订售后详情，当前售后订单下的小产品列表
     *
     * @param page      分页器
     * @param afterCode 售后订单编号
     */
    IPage<MyAfterProduct> getAfterSmallPro(@Param("page") Page<MyAfterProduct> page, @Param("afterCode") String afterCode);

    /**
     * 团订售后详情，当前售后订单下的小产品列表(不分页)
     *
     * @param afterCode 售后订单编号
     */
    List<MyAfterProduct> getAfterSmallPro2(@Param("afterCode") String afterCode);

    /**
     * 团订售后详情查询以及拒绝的人员
     *
     * @param afterOrderID 售后订单跟踪表ID
     */
    List<MyAfterProduct> listRefust(@Param("afterOrderID") String afterOrderID);

    /**
     * 团订售后已同意的小产品
     *
     * @param afterOrderID 售后订单跟踪表ID
     */
    List<MyAfterProduct> listAgree(@Param("afterOrderID") String afterOrderID);

    /**
     * 产品已收列表
     *
     * @param afterCode 售后订单编号
     */
    List<MyAfterProduct> listProductget(@Param("afterCode") String afterCode);

    /**
     * 根据批次名称查询批次基本信息
     *
     * @param orderSn   团订订单编号
     * @param batchName 批次名称
     */
    MlccTrackingTeamDepart getBatchByCode(@Param("orderSn") String orderSn, @Param("batchName") String batchName);

    /**
     * 前端展示售后产品发货列表
     *
     * @param afterCode 售后订单编号
     */
    List<MyAfterProduct> outAfterPro(@Param("afterCode") String afterCode);

    /**
     * 查询返修的小产品尺寸数据
     *
     * @param smallProid 售后小产品ID
     * @param afterCode  售后订单编号
     */
    List<MyBodySizeInfo> getAfterSize(@Param("smallProid") String smallProid, @Param("afterCode") String afterCode);

    /**
     * 查询重做的小产品尺寸数据
     *
     * @param smallProid 售后小产品ID
     * @param afterCode  售后订单编号
     */
    List<MyBodySizeInfo> getReAfterSize(@Param("smallProid") String smallProid, @Param("afterCode") String afterCode);

    /**
     * 查询返修的小产品尺寸数据
     *
     * @param afterID   售后小产品ID
     * @param afterCode 售后订单编号
     */
    List<MyBodySizeInfo> getRestSize(@Param("afterID") String afterID, @Param("afterCode") String afterCode);

    /**
     * 1、查询产品尺寸之前，先查产品
     *
     * @param orderSn   个订订单编号
     * @param afterCode 售后订单编号
     */
    List<Myproduct> listSingleAfterProduct(@Param("orderSn") String orderSn, @Param("afterCode") String afterCode);

    /**
     * 2、个订售后详情获取产品返修尺寸数据
     *
     * @param productID 产品ID
     * @param orderSn   个订订单编号
     * @param afterCode 售后订单编号
     */
    List<MyBodySizeInfo> listSingleAfterProductSize(@Param("productID") String productID, @Param("orderSn") String orderSn, @Param("afterCode") String afterCode);
}
